package com.mnkjxy.beauty.view.manager;

import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.mnkjxy.beauty.net.NetUtils;

public abstract class BasicView {
	private static final String TAG = "BasicView";
	protected Context context;
	protected ViewGroup showInMiddle;
	/**
	 * 视图之间传递数据
	 */
	protected Bundle bundle;

	public BasicView(Context context) {
		this.context = context;
		init();
		setLinstener();
	}

	/**
	 * 为组件设置监听
	 */
	protected abstract void setLinstener();

	/**
	 * 返回需要在中间容器加载的view
	 * 
	 * @return
	 */
	public View getView() {

		return showInMiddle;
	}

	/**
	 * 定义初始化一个中间视图类变量,并在getChild()中返回这个变量 ,使用View.inflater加载布局
	 */
	protected abstract void init();

	/**
	 * 返回一个id这个id必须在views这个接口中配置,不得直接使用数字
	 * 
	 * @return
	 */
	protected abstract int getId();

	/**
	 * 子类可以用这个方法进行网络数据库等费时的操作
	 * 
	 * @Params 网络请求的参数
	 * @Progress 用于更新进度,一般是int
	 * @Result 网络请求的结果类型
	 * @author lqp
	 * 
	 */
	protected abstract class myHttpTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
		/**
		 * 检查网络连接等的连接前的初始化操作
		 * 
		 */
		@Override
		protected void onPreExecute() {
			// TODO Auto-generated method stub
			if (!NetUtils.checkConnection(context)) {
				cancel(true);
				Toast.makeText(context, "请保证网络连接", 0).show();
			}
		}
	}

	/**
	 * 在视图隐藏后做内存清理等操作
	 */
	public void onPause() {
		// TODO Auto-generated method stub

		Log.i(TAG, "onPause" + "------" + this.getClass().getSimpleName());
	}

	/**
	 * 视图重新被加载时候的操作
	 */
	public void onResume() {
		// TODO Auto-generated method stub
		Log.i(TAG, "onResume" + "------" + this.getClass().getSimpleName());
	}
}
